// 包含必要的头文件
#include "thread.h" // thread.h - 线程库头文件
#include <iostream> // iostream - 标准输入输出
#include <memory>   // memory - 智能指针
#include <vector>   // vector - 容器
#include <unistd.h> // unistd.h - 系统调用

using namespace sylar;

// 线程执行函数
// 功能：打印当前线程信息并休眠60秒
void func()
{
    // 打印线程信息：
    // 1. 当前线程ID
    // 2. 当前线程名称
    // 3. 当前线程对象的ID
    // 4. 当前线程对象的名称
    std::cout << "id: " << Thread::GetThreadId() << ", name: " << Thread::GetName();
    std::cout << ", this id: " << Thread::GetThis()->getId() << ", this name: " << Thread::GetThis()->getName() << std::endl;

    // 线程休眠60秒
    sleep(60);
}

// 主函数
// 功能：创建5个线程并等待它们完成
int main() {
    // 线程指针容器
    std::vector<std::shared_ptr<Thread>> thrs;  

    // 创建5个线程
    // 每个线程：
    // 1. 执行func函数
    // 2. 名称格式为"thread_0"到"thread_4"
    for(int i=0;i<5;i++)
    {
        std::shared_ptr<Thread> thr = std::make_shared<Thread>(&func, "thread_"+std::to_string(i));
        thrs.push_back(thr);
    }

    // 等待所有线程完成
    for(int i=0;i<5;i++)
    {
        thrs[i]->join();
    }

    return 0;
}